perm filename TALK[4,KMC]4 blob
sn#043946 filedate 1973-05-22 generic text, type T, neo UTF8
00100 % TO RECONSTRUCT THE TALK CORE IMAGE:
00200
00300 .R MLISPC TALK → TALK.LAP
00400 *(MLISP TALK T)
00500 *↑C
00600
00700 .R LISP 16 TALK.LAP → TALK.DMP
00800 ALLOC? Y
00900 FULL WDS=2000_ _ MEANS <SPACE>
01000 BIN.PROG.SP=3200_
01100 SPEC.PDL=_
01200 REG. PDL=_
01300 HASH=_
01400 *(DSKIN (TALK.LAP) (S,DAV) (MAIL.FNS) SYS: UTILS)
01500 *(MAIL_INIT)
01600 *(INITFN (QUOTE RESTART))
01700 *↑C
01800 .SAVE TALK00
01900
02000 TO RUN THE PROGRAM, TYPE
02100 .RUN TALK00[4,KMC]
02200 %
02300
02400
02500 BEGIN NEW EOF, FILE1, FILE2; SPECIAL EOF, FILE1, FILE2;
02600
02700
02800 FEXPR OUT (L); % L = (DESTINATION FUNCTION OPEN CLOSE) %
02900 IF L[1] EQ 'DOC THEN SEND_MAIL('DOCJOB, L[2])
03000 ELSE IF L[1] EQ 'OWN THEN EVAL L[2]
03100 ELSE BEGIN
03200 IF LENGTH L ≥ 3 & L[3] THEN EVAL <'OUTPUT, 'DSK:, EVAL L[1]>;
03300 OUTC(T, NIL);
03400 EVAL L[2];
03500 OUTC(NIL, IF LENGTH L = 4 THEN L[4] ELSE NIL);
03600 END;
03700
03800
03900 FEXPR INP (L); % L = (SOURCE FUNCTION) %
04000 IF L[1] EQ 'DOC THEN SEND_MAIL('DOCJOB, <'SEND_MAIL, '(QUOTE TALK00), L[2]>)
04100 ALSO WAIT_FOR_MAIL(NIL)
04200 ELSE EVAL L[2];
04300
04400
04500 EXPR READ_MESSAGE ();
04600 BEGIN NEW CH, L;
04700 PRINTSTR "READY:";
04800 DO NIL UNTIL (CH ← READCH()) NEQ CR & CH NEQ LF & CH NEQ ALTMODE;
04900 TERPRI TERPRI DO L ← CH CONS L UNTIL (CH ← READCH()) EQ ALTMODE & (CH ← READCH()) EQ ALTMODE;
05000 RETURN READLIST('?" CONS REVERSE('?" CONS L));
05100 END;
05200
05300
05400 EXPR PRINT_MESSAGE (MESSAGE);
05500 TERPRI TERPRI FOR NEW CH IN MESSAGE DO PRINC CH;
05600
05700
05800 EXPR PRINT_ALL (FILE); % COPIES FILE "FILE" TO CURRENT OUTPUT FILE %
05900 BEGIN NEW CH;
06000 EVAL <'INC, <'INPUT, FILE, 'DSK:, FILE>, NIL>;
06100 DO NIL UNTIL TYO(TYI()) EQ OCTAL 45 & (ATOM(CH ← ERRSET(READCH(),T)) | PRINC(CAR CH) & NIL);
06200 INC(NIL,T)
06300 END;
06400
06500
06600 EXPR SLASHIFY (L);
06700 FOR NEW I IN L COLLECT <'?/, I>;
00100 %##########################################################################################%
00200 %######################## EXECUTION BEGINS HERE #########################%
00300 %##########################################################################################%
00400
00500
00600 EOF ← PERCENT; % THE END-OF-FILE CHARACTER %
00700
00800 PRINTSTR TERPRI "WHAT DISK FILE DO YOU WANT THIS INTERVIEW SAVED ON? (5 LETTERS ONLY)";
00900 FILE1 ← TERPRI READ();
01000 FILE2 ← AT(SUBSTR(FILE1,1,5) CAT "A"); % OUTPUT ALTERNATES BETWEEN THESE TWO %
01100 OUT(FILE1, NIL, T); % INITIALIZATION %
01200
01300
01400 WHILE T DO
01500 BEGIN NEW MESSAGE, VALUES; SPECIAL MESSAGE, VALUES;
01600 IF ¬JOB_EXISTS('DOCJOB) THEN
01700 BEGIN
01800 PRINTSTR "THE DOCTOR HAS NOT STARTED RUNNING 'DOCJOB' YET.";
01900 DO SLEEP(30) UNTIL JOB_EXISTS('DOCJOB) | PROG2(PRINTSTR "STILL HASN'T STARTED 'DOCJOB'", NIL);
02000 TERPRI PRINTSTR "OK, HE JUST STARTED IT.";
02100 SLEEP(30); % MAKE SURE HE HAS TIME TO START IT UP %
02200 END;
02300 MESSAGE ← INP(DOC, READ_MESSAGE());
02400 OUT(OWN, TERPRI PRINTSTR MESSAGE);
02500 OUT(FILE1, TERPRI PRINTSTR TERPRI TERPRI MESSAGE);
02600 MESSAGE ← INP(OWN, READ_MESSAGE());
02700 EVAL<'OUT, 'DOC, <'PRINTSTR, <'QUOTE,READLIST SLASHIFY(EXPLODE AT MESSAGE)>>>;
02800 OUT(FILE1, PRINTSTR MESSAGE);
02900 OUT(FILE1, PRINC EOF, NIL, T);
03000 '(FILE1 FILE2) ←⊗ <FILE2, FILE1>; % ROTATE THE OUTPUT FILES %
03100 OUT(FILE1, PRINT_ALL(FILE2), T);
03200 END;
03300
03400
03500 END.